package com.syedu.day11;

/**
 * description：java.lang.Object类,它是所有Java类的顶级父类,任何Java类都是直接或者间接继承于它的
 *
 * 本类用来演示Object类中的方法: equals()和hashCode()方法
 * 这两个方法一般同时重写,来保证如下结论:
 * equals()方法返回true时,hashCode()的值要一定要相同
 * equals()方法返回false时,hashCode()的值要尽可能保证不同
 *
 * @author Administrator
 * @date 2022/3/23 13:33
 */
public class ObjectDemo4 {
    public static void main(String[] args) {
        /**
         * ==和equals(),都是用来进行比较的,返回类型boolean
         * == : 基本类型比较真值,对象类型比较内存地址
         * equals(): 基本类型不能使用该方法,它是负责比较对象的,默认情况比较的也是内存地址,
         * 但是我们可以通过方法重写,来改变equals()比较的规则,一般开发中,对象的属性值都相同,
         * 则我们可以认为是同一个对象
         */
        int i = 3;
        int j = 3;
        System.out.println(i == j);//true

        Emp e1 = new Emp(1, "jack", 25, null);
        Emp e2 = new Emp(2, "jack", 25, null);
        System.out.println(e1 == e2);//false
        System.out.println(e1.equals(e2));//false/true

        /**
         * hashCode()用来获取对象的哈希值(散列码)
         */
        System.out.println(e1.hashCode());
        System.out.println(e2.hashCode());
    }
}